﻿//
var PaginaPrueba_Controller =
{
    GridClientes: {},

    InitGridClientes:
    function PaginaPrueba_InitGridClientes() 
    {
        var grid =
        {
            Target: "divPrueba",
            TableId: "gridProyecto",
            PrimaryKey: "Id",
            Fields:
            [
                { Header: "Nombre", DataField: "Nombre",DataFieldEdit : "Nombre", Width: "150px", StyleCss: "FormatText", ControlEdit: "TextBox", ControlCss: "TextBoxMedium" , Required: true },
                { Header: "Descripcion", DataField: "Descripcion", DataFieldEdit : "Descripcion", StyleCss: "FormatText", ControlEdit: "TextBox",ControlCss: "TextBoxLarge" },
                { Header: "Fecha Registro", DataField: "FechaRegistro", Width: "100px", StyleCss: "FormatCenter",DataFieldEdit : "FechaRegistro", ControlEdit: "DatePickerJquery", ControlCss: "TextBoxShort",Required: true, RegularExpression: /^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/i },
                { Header: "Prioridad", DataField: "Prioridad", Width: "150px", StyleCss: "FormatCenter", DataFieldEdit : "Prioridad", ControlEdit: "ComboBox",ControlCss: "ComboBoxMedium",Required: true },
                { Header: "Severidad", DataField: "Severidad", Width: "150px", StyleCss: "FormatCenter",DataFieldEdit : "Severidad", ControlEdit: "ComboBox",ControlCss: "ComboBoxMedium",Required: true },
                { Header: "Activo", DataField: "ActivoDescripcion", Width: "60px", StyleCss: "FormatCenter",DataFieldEdit : "Activo", ControlEdit: "CheckBox" }
            ],
            RecordSearch : { Nombre: "", Descripcion: "", FechaRegistro: "", Prioridad: "", Severidad: "" },
            ShowPaging: [5,10,15,20,25,30,35,40],
            ChooseShowPaging: 10,
            TotalRecords:0,
            PageIndex: 1,
            OrderBy : "Nombre Asc",
            FunctionLoadGrid: PaginaPrueba_Controller.ListarGridJSONPagingClientes,
            FunctionExportToExcel: PaginaPrueba_Controller.ExportarExcelGridClientes,
            FunctionAddRecord: PaginaPrueba_Controller.EditarRegistroProyecto,
            FunctionSaveRecord: PaginaPrueba_Controller.GrabarRegistroProyecto,
            ButtonsActionRecord:
            [
                { styleCss: "IconRecordEdit", toolTip: "Editar", functionAction: PaginaPrueba_Controller.EditarRegistroProyecto },
                { styleCss: "IconRecordCancel", toolTip: "Eliminar", functionAction: PaginaPrueba_Controller.EliminarRegistroProyecto }
            ]
        };

        PaginaPrueba_Controller.GridClientes = grid;
    },

    ListarGridJSONPagingClientes:
    function PaginaPrueba_ListarGridJSONPagingClientes(registroBusqueda,orderBy,cantidadMostrar, paginaActual) 
    {
        PaginaPrueba_Controller.GridClientes.RecordSearch = registroBusqueda;
        PaginaPrueba_Controller.GridClientes.ChooseShowPaging = cantidadMostrar;
        PaginaPrueba_Controller.GridClientes.PageIndex = paginaActual;
        PaginaPrueba_Controller.GridClientes.OrderBy = orderBy;

        PaginaPrueba_Controller.ListarGridPagingClientes();
    },

    ListarGridPagingClientes:
    function PaginaPrueba_ListarGridPagingClientes() 
    {
        Global_UI.BlockUI(true);

        Global_UI.AjaxPOST
        (
            "PaginaPrueba.aspx/ListarProyectos",
            JSON.stringify
            ({
                registroBusqueda : PaginaPrueba_Controller.GridClientes.RecordSearch,
                paginaActual : PaginaPrueba_Controller.GridClientes.PageIndex,
                cantidadMostrar : PaginaPrueba_Controller.GridClientes.ChooseShowPaging,
                orderBy : PaginaPrueba_Controller.GridClientes.OrderBy
            }),
            PaginaPrueba_Controller.ListarGridPagingClientes_CallBack
        );
    },

    ListarGridPagingClientes_CallBack:
    function PaginaPrueba_ListarGridPagingClientes_CallBack(response) 
    {
        var dataTable = response.d.Key;
        PaginaPrueba_Controller.GridClientes.TotalRecords = response.d.Value;

        if(document.getElementById(PaginaPrueba_Controller.GridClientes.TableId) == null)
            GridJSON_JS.DataBind(PaginaPrueba_Controller.GridClientes, dataTable,PaginaPrueba_Controller.DataSourcesControlsGrid());
        else
            GridJSON_JS.DataBindOnlyRows(PaginaPrueba_Controller.GridClientes, dataTable);

        Global_UI.BlockUI(false);
    },

    DataSourcesControlsGrid:
    function PaginaPrueba_DataSourcesControlsGrid()
    {
        var dataSourcesControls =
        [
            { DataFieldEdit: "Prioridad", DataSource: [{Key: 0, Value: "Baja"},{Key: 1, Value: "Media"},{Key: 2, Value: "Alta"}] },
            { DataFieldEdit: "Severidad", DataSource: [{Key: 0, Value: "Baja"},{Key: 1, Value: "Media"},{Key: 2, Value: "Alta"}] }
        ];        

        return dataSourcesControls;
    },

    ExportarExcelGridClientes:
    function PaginaPrueba_ExportarExcelGridClientes(registroBusqueda) 
    {
        Global_UI.BlockUI(true);

        Global_UI.AjaxPOST
        (
            "PaginaPrueba.aspx/ExportarExcel",
            JSON.stringify
            ({
                registroBusqueda: registroBusqueda,
                gridFields: PaginaPrueba_Controller.GridClientes.Fields
            }),
            PaginaPrueba_Controller.ExportarExcelGridClientes_CallBack
        );
    },

    ExportarExcelGridClientes_CallBack:
    function PaginaPrueba_ExportarExcelGridClientes_CallBack(response) 
    {
        Global_UI.ResponseRedirect("../Compartido/MostrarArchivo.aspx?Archivo=" + response.d);

        Global_UI.BlockUI(false);
    },

    EditarRegistroProyecto:
    function PaginaPrueba_EditarRegistroProyecto(idProyecto) 
    {
        Global_UI.BlockUI(true);

        if(idProyecto==null) idProyecto = "0";

        Global_UI.AjaxPOST
        (
            "PaginaPrueba.aspx/CargarProyecto",
            JSON.stringify
            ({
                idProyecto: idProyecto
            }),
            PaginaPrueba_Controller.EditarRegistroProyecto_CallBack
        );
    },

    EditarRegistroProyecto_CallBack:
    function PaginaPrueba_EditarRegistroProyecto_CallBack(response) 
    {
        var proyecto = response.d ;

        GridJSON_JS.EditRecordGrid(PaginaPrueba_Controller.GridClientes,proyecto,PaginaPrueba_Controller.DataSourcesControlsGrid());

        Global_UI.BlockUI(false);
    },

    GrabarRegistroProyecto:
    function PaginaPrueba_GrabarRegistroProyecto(proyecto) 
    {
        Global_UI.BlockUI(true);

        if(proyecto.Id == "0") proyecto.Id = null;

        Global_UI.AjaxPOST
        (
            "PaginaPrueba.aspx/GrabarProyecto",
            JSON.stringify
            ({
                proyecto: proyecto
            }),
            PaginaPrueba_Controller.GrabarRegistroProyecto_CallBack
        );
    },

    GrabarRegistroProyecto_CallBack:
    function PaginaPrueba_GrabarRegistroProyecto_CallBack(response) 
    {
        var proyecto = response.d.Key;
        var nuevoRegistro = response.d.Value;

        GridJSON_JS.ReconstructRecordGrid(PaginaPrueba_Controller.GridClientes,proyecto,nuevoRegistro);

        Global_UI.BlockUI(false);
    },

    EliminarRegistroProyecto:
    function PaginaPrueba_EliminarRegistroProyecto(idProyecto) 
    {
        Global_UI.Confirm
        (
            "¿Desea eliminar este proyecto?",
            "Eliminar proyecto",
            function()
            {
                Global_UI.BlockUI(true);

                Global_UI.AjaxPOST
                (
                    "PaginaPrueba.aspx/EliminarProyecto",
                    JSON.stringify
                    ({
                        idProyecto: idProyecto
                    }),
                    PaginaPrueba_Controller.EliminarRegistroProyecto_CallBack
                );
            }
        );
    },

    EliminarRegistroProyecto_CallBack:
    function EliminarRegistroProyecto_CallBack(response) 
    {
        var id = response.d;

        GridJSON_JS.DeleteRecordGrid(PaginaPrueba_Controller.GridClientes,id);

        Global_UI.BlockUI(false);
    }
};


var PaginaPrueba_UI =
{
    OnLoad:
    function PaginaPrueba_OnLoad() 
    {
        PaginaPrueba_Controller.InitGridClientes();

        PaginaPrueba_Controller.ListarGridPagingClientes();
    }
};



